.\" Copyright (c) 1983 Regents of the University of California.
.\" All rights reserved.  The Berkeley software License Agreement
.\" specifies the terms and conditions for redistribution.
.\"
.\"	@(#)getgroups.2	6.3 (Berkeley) 5/13/86
.\"
.TH GETGROUPS 2 "May 13, 1986"
.UC 5
.SH NAME
getgroups \- get group access list
.SH SYNOPSIS
.nf
.ft B
#include <sys/param.h>
.PP
.ft B
ngroups = getgroups(gidsetlen, gidset)
int ngroups, gidsetlen, *gidset;
.fi
.SH DESCRIPTION
.I Getgroups
gets the current group access list of the user process
and stores it in the array 
.IR gidset .
The parameter
.I gidsetlen
indicates the number of entries that may be placed in 
.IR gidset.
.I Getgroups
returns the actual number of groups returned in
.IR gidset .
No more than NGROUPS, as defined in
.RI < sys/param.h >,
will ever
be returned.
.SH "RETURN VALUE
A successful call returns the number of groups in the group set.
A value of \-1 indicates that an error occurred, and the error
code is stored in the global variable \fIerrno\fP\|.
.SH "ERRORS
The possible errors for \fIgetgroup\fP are:
.TP 15
[EINVAL]
The argument
.I gidsetlen
is smaller than the number of groups in the group set.
.TP
[EFAULT]
The argument \fIgidset\fP specifies
an invalid address.
.SH "SEE ALSO
setgroups(2), initgroups(3X)
.SH BUGS
The
.I gidset
array should be of type
.BR gid_t ,
but remains integer for compatibility with earlier systems.
